#!/bin/bash

# 体育场馆预约系统 - 停止所有服务脚本
# 作者: Claude Assistant
# 日期: 2025-06-13

echo "🛑 停止体育场馆预约系统所有服务..."

# 定义PID文件
BACKEND_PID_FILE="logs/backend.pid"
FRONTEND_PID_FILE="logs/frontend.pid"

# 停止后端服务
if [ -f "$BACKEND_PID_FILE" ]; then
    BACKEND_PID=$(cat $BACKEND_PID_FILE)
    if ps -p $BACKEND_PID > /dev/null 2>&1; then
        echo "🔄 停止后端服务 (PID: $BACKEND_PID)..."
        kill $BACKEND_PID
        sleep 2
        if ps -p $BACKEND_PID > /dev/null 2>&1; then
            echo "⚠️  强制停止后端服务..."
            kill -9 $BACKEND_PID
        fi
        echo "✅ 后端服务已停止"
    else
        echo "ℹ️  后端服务未运行"
    fi
    rm -f $BACKEND_PID_FILE
else
    echo "ℹ️  未找到后端PID文件，尝试按端口停止..."
    if lsof -Pi :8080 -sTCP:LISTEN -t >/dev/null 2>&1; then
        echo "🔄 停止占用8080端口的进程..."
        lsof -ti:8080 | xargs kill -9 2>/dev/null
        echo "✅ 8080端口进程已停止"
    fi
fi

# 停止前端服务
if [ -f "$FRONTEND_PID_FILE" ]; then
    FRONTEND_PID=$(cat $FRONTEND_PID_FILE)
    if ps -p $FRONTEND_PID > /dev/null 2>&1; then
        echo "🔄 停止前端服务 (PID: $FRONTEND_PID)..."
        kill $FRONTEND_PID
        sleep 2
        if ps -p $FRONTEND_PID > /dev/null 2>&1; then
            echo "⚠️  强制停止前端服务..."
            kill -9 $FRONTEND_PID
        fi
        echo "✅ 前端服务已停止"
    else
        echo "ℹ️  前端服务未运行"
    fi
    rm -f $FRONTEND_PID_FILE
else
    echo "ℹ️  未找到前端PID文件，尝试按端口停止..."
    if lsof -Pi :8080 -sTCP:LISTEN -t >/dev/null 2>&1; then
        echo "🔄 停止占用8080端口的进程..."
        lsof -ti:8080 | xargs kill -9 2>/dev/null
        echo "✅ 8080端口进程已停止"
    fi
fi

# 清理其他可能的进程
echo "🧹 清理相关进程..."

# 停止所有python run.py进程
pkill -f "python.*run.py" 2>/dev/null && echo "✅ 已停止Python应用进程"

# 停止所有npm dev进程
pkill -f "npm.*dev" 2>/dev/null && echo "✅ 已停止npm开发进程"

# 停止所有node进程（谨慎使用）
# pkill -f "node.*admin_frontend" 2>/dev/null && echo "✅ 已停止Node.js进程"

# 检查端口是否已释放
echo "🔍 检查端口状态..."
if lsof -Pi :8080 -sTCP:LISTEN -t >/dev/null 2>&1; then
    echo "⚠️  端口8080仍被占用"
    lsof -Pi :8080 -sTCP:LISTEN
else
    echo "✅ 端口8080已释放"
fi

echo ""
echo "🎉 所有服务已停止！"
echo ""
echo "📝 如需重新启动:"
echo "   启动所有服务: ./start_all.sh"
echo "   仅启动后端: ./start_backend.sh"
echo "   仅启动前端: ./start_frontend.sh" 